home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / wx / py / frame.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  30KB  |  798 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
  5. __cvsid__ = '$Id: frame.py 44319 2007-01-26 07:17:30Z RD $'
  6. __revision__ = '$Revision: 44319 $'[11:-2]
  7. import wx
  8. import os
  9. from version import VERSION
  10. import editwindow
  11. import dispatcher
  12. ID_NEW = wx.ID_NEW
  13. ID_OPEN = wx.ID_OPEN
  14. ID_REVERT = wx.ID_REVERT
  15. ID_CLOSE = wx.ID_CLOSE
  16. ID_SAVE = wx.ID_SAVE
  17. ID_SAVEAS = wx.ID_SAVEAS
  18. ID_PRINT = wx.ID_PRINT
  19. ID_EXIT = wx.ID_EXIT
  20. ID_UNDO = wx.ID_UNDO
  21. ID_REDO = wx.ID_REDO
  22. ID_CUT = wx.ID_CUT
  23. ID_COPY = wx.ID_COPY
  24. ID_PASTE = wx.ID_PASTE
  25. ID_CLEAR = wx.ID_CLEAR
  26. ID_SELECTALL = wx.ID_SELECTALL
  27. ID_EMPTYBUFFER = wx.NewId()
  28. ID_ABOUT = wx.ID_ABOUT
  29. ID_HELP = wx.NewId()
  30. ID_AUTOCOMP = wx.NewId()
  31. ID_AUTOCOMP_SHOW = wx.NewId()
  32. ID_AUTOCOMP_MAGIC = wx.NewId()
  33. ID_AUTOCOMP_SINGLE = wx.NewId()
  34. ID_AUTOCOMP_DOUBLE = wx.NewId()
  35. ID_CALLTIPS = wx.NewId()
  36. ID_CALLTIPS_SHOW = wx.NewId()
  37. ID_CALLTIPS_INSERT = wx.NewId()
  38. ID_COPY_PLUS = wx.NewId()
  39. ID_NAMESPACE = wx.NewId()
  40. ID_PASTE_PLUS = wx.NewId()
  41. ID_WRAP = wx.NewId()
  42. ID_TOGGLE_MAXIMIZE = wx.NewId()
  43. ID_USEAA = wx.NewId()
  44. ID_SHOW_LINENUMBERS = wx.NewId()
  45. ID_AUTO_SAVESETTINGS = wx.NewId()
  46. ID_SAVEHISTORY = wx.NewId()
  47. ID_SAVEHISTORYNOW = wx.NewId()
  48. ID_CLEARHISTORY = wx.NewId()
  49. ID_SAVESETTINGS = wx.NewId()
  50. ID_DELSETTINGSFILE = wx.NewId()
  51. ID_EDITSTARTUPSCRIPT = wx.NewId()
  52. ID_EXECSTARTUPSCRIPT = wx.NewId()
  53. ID_STARTUP = wx.NewId()
  54. ID_SETTINGS = wx.NewId()
  55. ID_FIND = wx.ID_FIND
  56. ID_FINDNEXT = wx.NewId()
  57. ID_SHOWTOOLS = wx.NewId()
  58.  
  59. class Frame(wx.Frame):
  60.     revision = __revision__
  61.     
  62.     def __init__(self, parent = None, id = -1, title = 'Editor', pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE):
  63.         wx.Frame.__init__(self, parent, id, title, pos, size, style)
  64.         self.CreateStatusBar()
  65.         self.SetStatusText('Frame')
  66.         import images as images
  67.         self.SetIcon(images.getPyIcon())
  68.         self._Frame__createMenus()
  69.         self.iconized = False
  70.         self.findDlg = None
  71.         self.findData = wx.FindReplaceData()
  72.         self.findData.SetFlags(wx.FR_DOWN)
  73.         self.Bind(wx.EVT_CLOSE, self.OnClose)
  74.         self.Bind(wx.EVT_ICONIZE, self.OnIconize)
  75.  
  76.     
  77.     def OnIconize(self, event):
  78.         self.iconized = event.Iconized()
  79.  
  80.     
  81.     def OnClose(self, event):
  82.         self.Destroy()
  83.  
  84.     
  85.     def __createMenus(self):
  86.         m = self.fileMenu = wx.Menu()
  87.         m.Append(ID_NEW, '&New \tCtrl+N', 'New file')
  88.         m.Append(ID_OPEN, '&Open... \tCtrl+O', 'Open file')
  89.         m.AppendSeparator()
  90.         m.Append(ID_REVERT, '&Revert \tCtrl+R', 'Revert to last saved version')
  91.         m.Append(ID_CLOSE, '&Close \tCtrl+W', 'Close file')
  92.         m.AppendSeparator()
  93.         m.Append(ID_SAVE, '&Save... \tCtrl+S', 'Save file')
  94.         m.Append(ID_SAVEAS, 'Save &As \tCtrl+Shift+S', 'Save file with new name')
  95.         m.AppendSeparator()
  96.         m.Append(ID_PRINT, '&Print... \tCtrl+P', 'Print file')
  97.         m.AppendSeparator()
  98.         m.Append(ID_NAMESPACE, '&Update Namespace \tCtrl+Shift+N', 'Update namespace for autocompletion and calltips')
  99.         m.AppendSeparator()
  100.         m.Append(ID_EXIT, 'E&xit\tCtrl+Q', 'Exit Program')
  101.         m = self.editMenu = wx.Menu()
  102.         m.Append(ID_UNDO, '&Undo \tCtrl+Z', 'Undo the last action')
  103.         m.Append(ID_REDO, '&Redo \tCtrl+Y', 'Redo the last undone action')
  104.         m.AppendSeparator()
  105.         m.Append(ID_CUT, 'Cu&t \tCtrl+X', 'Cut the selection')
  106.         m.Append(ID_COPY, '&Copy \tCtrl+C', 'Copy the selection')
  107.         m.Append(ID_COPY_PLUS, 'Cop&y Plus \tCtrl+Shift+C', 'Copy the selection - retaining prompts')
  108.         m.Append(ID_PASTE, '&Paste \tCtrl+V', 'Paste from clipboard')
  109.         m.Append(ID_PASTE_PLUS, 'Past&e Plus \tCtrl+Shift+V', 'Paste and run commands')
  110.         m.AppendSeparator()
  111.         m.Append(ID_CLEAR, 'Cle&ar', 'Delete the selection')
  112.         m.Append(ID_SELECTALL, 'Select A&ll \tCtrl+A', 'Select all text')
  113.         m.AppendSeparator()
  114.         m.Append(ID_EMPTYBUFFER, 'E&mpty Buffer...', 'Delete all the contents of the edit buffer')
  115.         m.Append(ID_FIND, '&Find Text... \tCtrl+F', 'Search for text in the edit buffer')
  116.         m.Append(ID_FINDNEXT, 'Find &Next \tF3', 'Find next/previous instance of the search text')
  117.         m = self.viewMenu = wx.Menu()
  118.         m.Append(ID_WRAP, '&Wrap Lines\tCtrl+Shift+W', 'Wrap lines at right edge', wx.ITEM_CHECK)
  119.         m.Append(ID_SHOW_LINENUMBERS, '&Show Line Numbers\tCtrl+Shift+L', 'Show Line Numbers', wx.ITEM_CHECK)
  120.         m.Append(ID_TOGGLE_MAXIMIZE, '&Toggle Maximize\tF11', 'Maximize/Restore Application')
  121.         if hasattr(self, 'ToggleTools'):
  122.             m.Append(ID_SHOWTOOLS, 'Show &Tools\tF4', 'Show the filling and other tools', wx.ITEM_CHECK)
  123.         
  124.         m = self.autocompMenu = wx.Menu()
  125.         m.Append(ID_AUTOCOMP_SHOW, 'Show &Auto Completion\tCtrl+Shift+A', 'Show auto completion list', wx.ITEM_CHECK)
  126.         m.Append(ID_AUTOCOMP_MAGIC, 'Include &Magic Attributes\tCtrl+Shift+M', 'Include attributes visible to __getattr__ and __setattr__', wx.ITEM_CHECK)
  127.         m.Append(ID_AUTOCOMP_SINGLE, 'Include Single &Underscores\tCtrl+Shift+U', 'Include attibutes prefixed by a single underscore', wx.ITEM_CHECK)
  128.         m.Append(ID_AUTOCOMP_DOUBLE, 'Include &Double Underscores\tCtrl+Shift+D', 'Include attibutes prefixed by a double underscore', wx.ITEM_CHECK)
  129.         m = self.calltipsMenu = wx.Menu()
  130.         m.Append(ID_CALLTIPS_SHOW, 'Show Call &Tips\tCtrl+Shift+T', 'Show call tips with argument signature and docstring', wx.ITEM_CHECK)
  131.         m.Append(ID_CALLTIPS_INSERT, '&Insert Call Tips\tCtrl+Shift+I', '&Insert Call Tips', wx.ITEM_CHECK)
  132.         m = self.optionsMenu = wx.Menu()
  133.         m.AppendMenu(ID_AUTOCOMP, '&Auto Completion', self.autocompMenu, 'Auto Completion Options')
  134.         m.AppendMenu(ID_CALLTIPS, '&Call Tips', self.calltipsMenu, 'Call Tip Options')
  135.         if wx.Platform == '__WXMAC__':
  136.             m.Append(ID_USEAA, '&Use AntiAliasing', 'Use anti-aliased fonts', wx.ITEM_CHECK)
  137.         
  138.         m.AppendSeparator()
  139.         self.historyMenu = wx.Menu()
  140.         self.historyMenu.Append(ID_SAVEHISTORY, '&Autosave History', 'Automatically save history on close', wx.ITEM_CHECK)
  141.         self.historyMenu.Append(ID_SAVEHISTORYNOW, '&Save History Now', 'Save history')
  142.         self.historyMenu.Append(ID_CLEARHISTORY, '&Clear History ', 'Clear history')
  143.         m.AppendMenu(-1, '&History', self.historyMenu, 'History Options')
  144.         self.startupMenu = wx.Menu()
  145.         self.startupMenu.Append(ID_EXECSTARTUPSCRIPT, 'E&xecute Startup Script', 'Execute Startup Script', wx.ITEM_CHECK)
  146.         self.startupMenu.Append(ID_EDITSTARTUPSCRIPT, '&Edit Startup Script...', 'Edit Startup Script')
  147.         m.AppendMenu(ID_STARTUP, '&Startup', self.startupMenu, 'Startup Options')
  148.         self.settingsMenu = wx.Menu()
  149.         self.settingsMenu.Append(ID_AUTO_SAVESETTINGS, '&Auto Save Settings', 'Automatically save settings on close', wx.ITEM_CHECK)
  150.         self.settingsMenu.Append(ID_SAVESETTINGS, '&Save Settings', 'Save settings now')
  151.         self.settingsMenu.Append(ID_DELSETTINGSFILE, '&Revert to default', 'Revert to the default settings')
  152.         m.AppendMenu(ID_SETTINGS, '&Settings', self.settingsMenu, 'Settings Options')
  153.         m = self.helpMenu = wx.Menu()
  154.         m.Append(ID_HELP, '&Help\tF1', 'Help!')
  155.         m.AppendSeparator()
  156.         m.Append(ID_ABOUT, '&About...', 'About this program')
  157.         b = self.menuBar = wx.MenuBar()
  158.         b.Append(self.fileMenu, '&File')
  159.         b.Append(self.editMenu, '&Edit')
  160.         b.Append(self.viewMenu, '&View')
  161.         b.Append(self.optionsMenu, '&Options')
  162.         b.Append(self.helpMenu, '&Help')
  163.         self.SetMenuBar(b)
  164.         self.Bind(wx.EVT_MENU, self.OnFileNew, id = ID_NEW)
  165.         self.Bind(wx.EVT_MENU, self.OnFileOpen, id = ID_OPEN)
  166.         self.Bind(wx.EVT_MENU, self.OnFileRevert, id = ID_REVERT)
  167.         self.Bind(wx.EVT_MENU, self.OnFileClose, id = ID_CLOSE)
  168.         self.Bind(wx.EVT_MENU, self.OnFileSave, id = ID_SAVE)
  169.         self.Bind(wx.EVT_MENU, self.OnFileSaveAs, id = ID_SAVEAS)
  170.         self.Bind(wx.EVT_MENU, self.OnFileUpdateNamespace, id = ID_NAMESPACE)
  171.         self.Bind(wx.EVT_MENU, self.OnFilePrint, id = ID_PRINT)
  172.         self.Bind(wx.EVT_MENU, self.OnExit, id = ID_EXIT)
  173.         self.Bind(wx.EVT_MENU, self.OnUndo, id = ID_UNDO)
  174.         self.Bind(wx.EVT_MENU, self.OnRedo, id = ID_REDO)
  175.         self.Bind(wx.EVT_MENU, self.OnCut, id = ID_CUT)
  176.         self.Bind(wx.EVT_MENU, self.OnCopy, id = ID_COPY)
  177.         self.Bind(wx.EVT_MENU, self.OnCopyPlus, id = ID_COPY_PLUS)
  178.         self.Bind(wx.EVT_MENU, self.OnPaste, id = ID_PASTE)
  179.         self.Bind(wx.EVT_MENU, self.OnPastePlus, id = ID_PASTE_PLUS)
  180.         self.Bind(wx.EVT_MENU, self.OnClear, id = ID_CLEAR)
  181.         self.Bind(wx.EVT_MENU, self.OnSelectAll, id = ID_SELECTALL)
  182.         self.Bind(wx.EVT_MENU, self.OnEmptyBuffer, id = ID_EMPTYBUFFER)
  183.         self.Bind(wx.EVT_MENU, self.OnAbout, id = ID_ABOUT)
  184.         self.Bind(wx.EVT_MENU, self.OnHelp, id = ID_HELP)
  185.         self.Bind(wx.EVT_MENU, self.OnAutoCompleteShow, id = ID_AUTOCOMP_SHOW)
  186.         self.Bind(wx.EVT_MENU, self.OnAutoCompleteMagic, id = ID_AUTOCOMP_MAGIC)
  187.         self.Bind(wx.EVT_MENU, self.OnAutoCompleteSingle, id = ID_AUTOCOMP_SINGLE)
  188.         self.Bind(wx.EVT_MENU, self.OnAutoCompleteDouble, id = ID_AUTOCOMP_DOUBLE)
  189.         self.Bind(wx.EVT_MENU, self.OnCallTipsShow, id = ID_CALLTIPS_SHOW)
  190.         self.Bind(wx.EVT_MENU, self.OnCallTipsInsert, id = ID_CALLTIPS_INSERT)
  191.         self.Bind(wx.EVT_MENU, self.OnWrap, id = ID_WRAP)
  192.         self.Bind(wx.EVT_MENU, self.OnUseAA, id = ID_USEAA)
  193.         self.Bind(wx.EVT_MENU, self.OnToggleMaximize, id = ID_TOGGLE_MAXIMIZE)
  194.         self.Bind(wx.EVT_MENU, self.OnShowLineNumbers, id = ID_SHOW_LINENUMBERS)
  195.         self.Bind(wx.EVT_MENU, self.OnAutoSaveSettings, id = ID_AUTO_SAVESETTINGS)
  196.         self.Bind(wx.EVT_MENU, self.OnSaveHistory, id = ID_SAVEHISTORY)
  197.         self.Bind(wx.EVT_MENU, self.OnSaveHistoryNow, id = ID_SAVEHISTORYNOW)
  198.         self.Bind(wx.EVT_MENU, self.OnClearHistory, id = ID_CLEARHISTORY)
  199.         self.Bind(wx.EVT_MENU, self.OnSaveSettings, id = ID_SAVESETTINGS)
  200.         self.Bind(wx.EVT_MENU, self.OnDelSettingsFile, id = ID_DELSETTINGSFILE)
  201.         self.Bind(wx.EVT_MENU, self.OnEditStartupScript, id = ID_EDITSTARTUPSCRIPT)
  202.         self.Bind(wx.EVT_MENU, self.OnExecStartupScript, id = ID_EXECSTARTUPSCRIPT)
  203.         self.Bind(wx.EVT_MENU, self.OnFindText, id = ID_FIND)
  204.         self.Bind(wx.EVT_MENU, self.OnFindNext, id = ID_FINDNEXT)
  205.         self.Bind(wx.EVT_MENU, self.OnToggleTools, id = ID_SHOWTOOLS)
  206.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_NEW)
  207.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_OPEN)
  208.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_REVERT)
  209.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_CLOSE)
  210.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SAVE)
  211.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SAVEAS)
  212.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_NAMESPACE)
  213.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_PRINT)
  214.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_UNDO)
  215.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_REDO)
  216.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_CUT)
  217.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_COPY)
  218.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_COPY_PLUS)
  219.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_PASTE)
  220.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_PASTE_PLUS)
  221.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_CLEAR)
  222.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SELECTALL)
  223.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_EMPTYBUFFER)
  224.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_AUTOCOMP_SHOW)
  225.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_AUTOCOMP_MAGIC)
  226.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_AUTOCOMP_SINGLE)
  227.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_AUTOCOMP_DOUBLE)
  228.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_CALLTIPS_SHOW)
  229.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_CALLTIPS_INSERT)
  230.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_WRAP)
  231.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_USEAA)
  232.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SHOW_LINENUMBERS)
  233.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_AUTO_SAVESETTINGS)
  234.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SAVESETTINGS)
  235.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_DELSETTINGSFILE)
  236.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_EXECSTARTUPSCRIPT)
  237.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SAVEHISTORY)
  238.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SAVEHISTORYNOW)
  239.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_CLEARHISTORY)
  240.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_EDITSTARTUPSCRIPT)
  241.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_FIND)
  242.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_FINDNEXT)
  243.         self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateMenu, id = ID_SHOWTOOLS)
  244.         self.Bind(wx.EVT_ACTIVATE, self.OnActivate)
  245.         self.Bind(wx.EVT_FIND, self.OnFindNext)
  246.         self.Bind(wx.EVT_FIND_NEXT, self.OnFindNext)
  247.         self.Bind(wx.EVT_FIND_CLOSE, self.OnFindClose)
  248.  
  249.     
  250.     def OnShowLineNumbers(self, event):
  251.         win = wx.Window.FindFocus()
  252.         if hasattr(win, 'lineNumbers'):
  253.             win.lineNumbers = event.IsChecked()
  254.             win.setDisplayLineNumbers(win.lineNumbers)
  255.         
  256.  
  257.     
  258.     def OnToggleMaximize(self, event):
  259.         self.Maximize(not self.IsMaximized())
  260.  
  261.     
  262.     def OnFileNew(self, event):
  263.         self.bufferNew()
  264.  
  265.     
  266.     def OnFileOpen(self, event):
  267.         self.bufferOpen()
  268.  
  269.     
  270.     def OnFileRevert(self, event):
  271.         self.bufferRevert()
  272.  
  273.     
  274.     def OnFileClose(self, event):
  275.         self.bufferClose()
  276.  
  277.     
  278.     def OnFileSave(self, event):
  279.         self.bufferSave()
  280.  
  281.     
  282.     def OnFileSaveAs(self, event):
  283.         self.bufferSaveAs()
  284.  
  285.     
  286.     def OnFileUpdateNamespace(self, event):
  287.         self.updateNamespace()
  288.  
  289.     
  290.     def OnFilePrint(self, event):
  291.         self.bufferPrint()
  292.  
  293.     
  294.     def OnExit(self, event):
  295.         self.Close(False)
  296.  
  297.     
  298.     def OnUndo(self, event):
  299.         win = wx.Window.FindFocus()
  300.         win.Undo()
  301.  
  302.     
  303.     def OnRedo(self, event):
  304.         win = wx.Window.FindFocus()
  305.         win.Redo()
  306.  
  307.     
  308.     def OnCut(self, event):
  309.         win = wx.Window.FindFocus()
  310.         win.Cut()
  311.  
  312.     
  313.     def OnCopy(self, event):
  314.         win = wx.Window.FindFocus()
  315.         win.Copy()
  316.  
  317.     
  318.     def OnCopyPlus(self, event):
  319.         win = wx.Window.FindFocus()
  320.         win.CopyWithPrompts()
  321.  
  322.     
  323.     def OnPaste(self, event):
  324.         win = wx.Window.FindFocus()
  325.         win.Paste()
  326.  
  327.     
  328.     def OnPastePlus(self, event):
  329.         win = wx.Window.FindFocus()
  330.         win.PasteAndRun()
  331.  
  332.     
  333.     def OnClear(self, event):
  334.         win = wx.Window.FindFocus()
  335.         win.Clear()
  336.  
  337.     
  338.     def OnEmptyBuffer(self, event):
  339.         win = wx.Window.FindFocus()
  340.         d = wx.MessageDialog(self, 'Are you sure you want to clear the edit buffer,\ndeleting all the text?', 'Empty Buffer', wx.OK | wx.CANCEL | wx.ICON_QUESTION)
  341.         answer = d.ShowModal()
  342.         d.Destroy()
  343.         if answer == wx.ID_OK:
  344.             win.ClearAll()
  345.             if hasattr(win, 'prompt'):
  346.                 win.prompt()
  347.             
  348.         
  349.  
  350.     
  351.     def OnSelectAll(self, event):
  352.         win = wx.Window.FindFocus()
  353.         win.SelectAll()
  354.  
  355.     
  356.     def OnAbout(self, event):
  357.         title = 'About'
  358.         text = 'Your message here.'
  359.         dialog = wx.MessageDialog(self, text, title, wx.OK | wx.ICON_INFORMATION)
  360.         dialog.ShowModal()
  361.         dialog.Destroy()
  362.  
  363.     
  364.     def OnHelp(self, event):
  365.         title = 'Help'
  366.         text = "Type 'shell.help()' in the shell window."
  367.         dialog = wx.MessageDialog(self, text, title, wx.OK | wx.ICON_INFORMATION)
  368.         dialog.ShowModal()
  369.         dialog.Destroy()
  370.  
  371.     
  372.     def OnAutoCompleteShow(self, event):
  373.         win = wx.Window.FindFocus()
  374.         win.autoComplete = event.IsChecked()
  375.  
  376.     
  377.     def OnAutoCompleteMagic(self, event):
  378.         win = wx.Window.FindFocus()
  379.         win.autoCompleteIncludeMagic = event.IsChecked()
  380.  
  381.     
  382.     def OnAutoCompleteSingle(self, event):
  383.         win = wx.Window.FindFocus()
  384.         win.autoCompleteIncludeSingle = event.IsChecked()
  385.  
  386.     
  387.     def OnAutoCompleteDouble(self, event):
  388.         win = wx.Window.FindFocus()
  389.         win.autoCompleteIncludeDouble = event.IsChecked()
  390.  
  391.     
  392.     def OnCallTipsShow(self, event):
  393.         win = wx.Window.FindFocus()
  394.         win.autoCallTip = event.IsChecked()
  395.  
  396.     
  397.     def OnCallTipsInsert(self, event):
  398.         win = wx.Window.FindFocus()
  399.         win.callTipInsert = event.IsChecked()
  400.  
  401.     
  402.     def OnWrap(self, event):
  403.         win = wx.Window.FindFocus()
  404.         win.SetWrapMode(event.IsChecked())
  405.         wx.FutureCall(1, self.shell.EnsureCaretVisible)
  406.  
  407.     
  408.     def OnUseAA(self, event):
  409.         win = wx.Window.FindFocus()
  410.         win.SetUseAntiAliasing(event.IsChecked())
  411.  
  412.     
  413.     def OnSaveHistory(self, event):
  414.         self.autoSaveHistory = event.IsChecked()
  415.  
  416.     
  417.     def OnSaveHistoryNow(self, event):
  418.         self.SaveHistory()
  419.  
  420.     
  421.     def OnClearHistory(self, event):
  422.         self.shell.clearHistory()
  423.  
  424.     
  425.     def OnAutoSaveSettings(self, event):
  426.         self.autoSaveSettings = event.IsChecked()
  427.  
  428.     
  429.     def OnSaveSettings(self, event):
  430.         self.DoSaveSettings()
  431.  
  432.     
  433.     def OnDelSettingsFile(self, event):
  434.         if self.config is not None:
  435.             d = wx.MessageDialog(self, 'Do you want to revert to the default settings?\n' + 'A restart is needed for the change to take effect', 'Warning', wx.OK | wx.CANCEL | wx.ICON_QUESTION)
  436.             answer = d.ShowModal()
  437.             d.Destroy()
  438.             if answer == wx.ID_OK:
  439.                 self.config.DeleteAll()
  440.                 self.LoadSettings()
  441.             
  442.         
  443.  
  444.     
  445.     def OnEditStartupScript(self, event):
  446.         if hasattr(self, 'EditStartupScript'):
  447.             self.EditStartupScript()
  448.         
  449.  
  450.     
  451.     def OnExecStartupScript(self, event):
  452.         self.execStartupScript = event.IsChecked()
  453.  
  454.     
  455.     def OnFindText(self, event):
  456.         if self.findDlg is not None:
  457.             return None
  458.         
  459.         win = wx.Window.FindFocus()
  460.         self.findDlg = wx.FindReplaceDialog(win, self.findData, 'Find', wx.FR_NOWHOLEWORD)
  461.         self.findDlg.Show()
  462.  
  463.     
  464.     def OnFindNext(self, event):
  465.         if not self.findData.GetFindString():
  466.             self.OnFindText(event)
  467.             return None
  468.         
  469.         if isinstance(event, wx.FindDialogEvent):
  470.             win = self.findDlg.GetParent()
  471.         else:
  472.             win = wx.Window.FindFocus()
  473.         win.DoFindNext(self.findData, self.findDlg)
  474.         if self.findDlg is not None:
  475.             self.OnFindClose(None)
  476.         
  477.  
  478.     
  479.     def OnFindClose(self, event):
  480.         self.findDlg.Destroy()
  481.         self.findDlg = None
  482.  
  483.     
  484.     def OnToggleTools(self, event):
  485.         self.ToggleTools()
  486.  
  487.     
  488.     def OnUpdateMenu(self, event):
  489.         win = wx.Window.FindFocus()
  490.         id = event.GetId()
  491.         event.Enable(True)
  492.         
  493.         try:
  494.             if id == ID_NEW:
  495.                 event.Enable(hasattr(self, 'bufferNew'))
  496.             elif id == ID_OPEN:
  497.                 event.Enable(hasattr(self, 'bufferOpen'))
  498.             elif id == ID_REVERT:
  499.                 if hasattr(self, 'bufferRevert'):
  500.                     pass
  501.                 event.Enable(self.hasBuffer())
  502.             elif id == ID_CLOSE:
  503.                 if hasattr(self, 'bufferClose'):
  504.                     pass
  505.                 event.Enable(self.hasBuffer())
  506.             elif id == ID_SAVE:
  507.                 if hasattr(self, 'bufferSave'):
  508.                     pass
  509.                 event.Enable(self.bufferHasChanged())
  510.             elif id == ID_SAVEAS:
  511.                 if hasattr(self, 'bufferSaveAs'):
  512.                     pass
  513.                 event.Enable(self.hasBuffer())
  514.             elif id == ID_NAMESPACE:
  515.                 if hasattr(self, 'updateNamespace'):
  516.                     pass
  517.                 event.Enable(self.hasBuffer())
  518.             elif id == ID_PRINT:
  519.                 if hasattr(self, 'bufferPrint'):
  520.                     pass
  521.                 event.Enable(self.hasBuffer())
  522.             elif id == ID_UNDO:
  523.                 event.Enable(win.CanUndo())
  524.             elif id == ID_REDO:
  525.                 event.Enable(win.CanRedo())
  526.             elif id == ID_CUT:
  527.                 event.Enable(win.CanCut())
  528.             elif id == ID_COPY:
  529.                 event.Enable(win.CanCopy())
  530.             elif id == ID_COPY_PLUS:
  531.                 if win.CanCopy():
  532.                     pass
  533.                 event.Enable(hasattr(win, 'CopyWithPrompts'))
  534.             elif id == ID_PASTE:
  535.                 event.Enable(win.CanPaste())
  536.             elif id == ID_PASTE_PLUS:
  537.                 if win.CanPaste():
  538.                     pass
  539.                 event.Enable(hasattr(win, 'PasteAndRun'))
  540.             elif id == ID_CLEAR:
  541.                 event.Enable(win.CanCut())
  542.             elif id == ID_SELECTALL:
  543.                 event.Enable(hasattr(win, 'SelectAll'))
  544.             elif id == ID_EMPTYBUFFER:
  545.                 if hasattr(win, 'ClearAll'):
  546.                     pass
  547.                 event.Enable(not win.GetReadOnly())
  548.             elif id == ID_AUTOCOMP_SHOW:
  549.                 event.Check(win.autoComplete)
  550.             elif id == ID_AUTOCOMP_MAGIC:
  551.                 event.Check(win.autoCompleteIncludeMagic)
  552.             elif id == ID_AUTOCOMP_SINGLE:
  553.                 event.Check(win.autoCompleteIncludeSingle)
  554.             elif id == ID_AUTOCOMP_DOUBLE:
  555.                 event.Check(win.autoCompleteIncludeDouble)
  556.             elif id == ID_CALLTIPS_SHOW:
  557.                 event.Check(win.autoCallTip)
  558.             elif id == ID_CALLTIPS_INSERT:
  559.                 event.Check(win.callTipInsert)
  560.             elif id == ID_WRAP:
  561.                 event.Check(win.GetWrapMode())
  562.             elif id == ID_USEAA:
  563.                 event.Check(win.GetUseAntiAliasing())
  564.             elif id == ID_SHOW_LINENUMBERS:
  565.                 event.Check(win.lineNumbers)
  566.             elif id == ID_AUTO_SAVESETTINGS:
  567.                 event.Check(self.autoSaveSettings)
  568.                 event.Enable(self.config is not None)
  569.             elif id == ID_SAVESETTINGS:
  570.                 if self.config is not None:
  571.                     pass
  572.                 event.Enable(hasattr(self, 'DoSaveSettings'))
  573.             elif id == ID_DELSETTINGSFILE:
  574.                 event.Enable(self.config is not None)
  575.             elif id == ID_EXECSTARTUPSCRIPT:
  576.                 event.Check(self.execStartupScript)
  577.                 event.Enable(self.config is not None)
  578.             elif id == ID_SAVEHISTORY:
  579.                 event.Check(self.autoSaveHistory)
  580.                 event.Enable(self.dataDir is not None)
  581.             elif id == ID_SAVEHISTORYNOW:
  582.                 if self.dataDir is not None:
  583.                     pass
  584.                 event.Enable(hasattr(self, 'SaveHistory'))
  585.             elif id == ID_CLEARHISTORY:
  586.                 event.Enable(self.dataDir is not None)
  587.             elif id == ID_EDITSTARTUPSCRIPT:
  588.                 event.Enable(hasattr(self, 'EditStartupScript'))
  589.                 event.Enable(self.dataDir is not None)
  590.             elif id == ID_FIND:
  591.                 event.Enable(hasattr(win, 'DoFindNext'))
  592.             elif id == ID_FINDNEXT:
  593.                 event.Enable(hasattr(win, 'DoFindNext'))
  594.             elif id == ID_SHOWTOOLS:
  595.                 event.Check(self.ToolsShown())
  596.             else:
  597.                 event.Enable(False)
  598.         except AttributeError:
  599.             event.Enable(False)
  600.  
  601.  
  602.     
  603.     def OnActivate(self, event):
  604.         if not event.GetActive():
  605.             win = wx.Window.FindFocus()
  606.             if hasattr(win, 'AutoCompActive') and win.AutoCompActive():
  607.                 win.AutoCompCancel()
  608.             
  609.         
  610.         event.Skip()
  611.  
  612.     
  613.     def LoadSettings(self, config):
  614.         pos = wx.Point(config.ReadInt('Window/PosX', -1), config.ReadInt('Window/PosY', -1))
  615.         size = wx.Size(config.ReadInt('Window/Width', -1), config.ReadInt('Window/Height', -1))
  616.         self.SetSize(size)
  617.         self.Move(pos)
  618.  
  619.     
  620.     def SaveSettings(self, config):
  621.         if not (self.iconized) and not self.IsMaximized():
  622.             (w, h) = self.GetSize()
  623.             config.WriteInt('Window/Width', w)
  624.             config.WriteInt('Window/Height', h)
  625.             (px, py) = self.GetPosition()
  626.             config.WriteInt('Window/PosX', px)
  627.             config.WriteInt('Window/PosY', py)
  628.         
  629.  
  630.  
  631.  
  632. class ShellFrameMixin:
  633.     
  634.     def __init__(self, config, dataDir):
  635.         self.config = config
  636.         self.dataDir = dataDir
  637.         self.startupScript = os.environ.get('PYTHONSTARTUP')
  638.         if not (self.startupScript) and self.dataDir:
  639.             self.startupScript = os.path.join(self.dataDir, 'startup')
  640.         
  641.         self.autoSaveSettings = False
  642.         self.autoSaveHistory = False
  643.         self.execStartupScript = True
  644.         if self.config:
  645.             self.execStartupScript = self.config.ReadBool('Options/ExecStartupScript', True)
  646.         
  647.  
  648.     
  649.     def OnHelp(self, event):
  650.         import wx.lib.dialogs as wx
  651.         title = 'Help on key bindings'
  652.         text = wx.py.shell.HELP_TEXT
  653.         dlg = wx.lib.dialogs.ScrolledMessageDialog(self, text, title, size = (700, 540))
  654.         fnt = wx.Font(10, wx.TELETYPE, wx.NORMAL, wx.NORMAL)
  655.         dlg.GetChildren()[0].SetFont(fnt)
  656.         dlg.GetChildren()[0].SetInsertionPoint(0)
  657.         dlg.ShowModal()
  658.         dlg.Destroy()
  659.  
  660.     
  661.     def LoadSettings(self):
  662.         if self.config is not None:
  663.             self.autoSaveSettings = self.config.ReadBool('Options/AutoSaveSettings', False)
  664.             self.execStartupScript = self.config.ReadBool('Options/ExecStartupScript', True)
  665.             self.autoSaveHistory = self.config.ReadBool('Options/AutoSaveHistory', False)
  666.             self.LoadHistory()
  667.         
  668.  
  669.     
  670.     def SaveSettings(self):
  671.         if self.config is not None:
  672.             self.config.WriteBool('Options/AutoSaveSettings', self.autoSaveSettings)
  673.             if self.autoSaveSettings:
  674.                 self.config.WriteBool('Options/AutoSaveHistory', self.autoSaveHistory)
  675.                 self.config.WriteBool('Options/ExecStartupScript', self.execStartupScript)
  676.             
  677.             if self.autoSaveHistory:
  678.                 self.SaveHistory()
  679.             
  680.         
  681.  
  682.     
  683.     def SaveHistory(self):
  684.         if self.dataDir:
  685.             
  686.             try:
  687.                 name = os.path.join(self.dataDir, 'history')
  688.                 f = file(name, 'w')
  689.                 hist = '\x00\n'.join(self.shell.history)
  690.                 f.write(hist)
  691.                 f.close()
  692.             d = wx.MessageDialog(self, 'Error saving history file.', 'Error', wx.ICON_EXCLAMATION)
  693.             d.ShowModal()
  694.             d.Destroy()
  695.             raise 
  696.  
  697.         
  698.  
  699.     
  700.     def LoadHistory(self):
  701.         if self.dataDir:
  702.             name = os.path.join(self.dataDir, 'history')
  703.             if os.path.exists(name):
  704.                 
  705.                 try:
  706.                     f = file(name, 'U')
  707.                     hist = f.read()
  708.                     f.close()
  709.                     self.shell.history = hist.split('\x00\n')
  710.                     dispatcher.send(signal = 'Shell.loadHistory', history = self.shell.history)
  711.                 d = wx.MessageDialog(self, 'Error loading history file.', 'Error', wx.ICON_EXCLAMATION)
  712.                 d.ShowModal()
  713.                 d.Destroy()
  714.  
  715.             
  716.         
  717.  
  718.     
  719.     def bufferHasChanged(self):
  720.         return True
  721.  
  722.     
  723.     def bufferSave(self):
  724.         import time as time
  725.         appname = wx.GetApp().GetAppName()
  726.         default = appname + '-' + time.strftime('%Y%m%d-%H%M.py')
  727.         fileName = wx.FileSelector('Save File As', 'Saving', default_filename = default, default_extension = 'py', wildcard = '*.py', flags = wx.SAVE | wx.OVERWRITE_PROMPT)
  728.         if not fileName:
  729.             return None
  730.         
  731.         text = self.shell.GetText()
  732.         
  733.         try:
  734.             f = open(fileName, 'w')
  735.             f.write(text)
  736.             f.close()
  737.         except:
  738.             d = wx.MessageDialog(self, u'Error saving session', u'Error', wx.OK | wx.ICON_ERROR)
  739.             d.ShowModal()
  740.             d.Destroy()
  741.  
  742.  
  743.     
  744.     def EditStartupScript(self):
  745.         if os.path.exists(self.startupScript):
  746.             text = file(self.startupScript, 'U').read()
  747.         else:
  748.             text = ''
  749.         dlg = EditStartupScriptDialog(self, self.startupScript, text)
  750.         if dlg.ShowModal() == wx.ID_OK:
  751.             text = dlg.GetText()
  752.             
  753.             try:
  754.                 f = file(self.startupScript, 'w')
  755.                 f.write(text)
  756.                 f.close()
  757.             d = wx.MessageDialog(self, 'Error saving startup file.', 'Error', wx.ICON_EXCLAMATION)
  758.             d.ShowModal()
  759.             d.Destroy()
  760.  
  761.         
  762.  
  763.  
  764.  
  765. class EditStartupScriptDialog(wx.Dialog):
  766.     
  767.     def __init__(self, parent, fileName, text):
  768.         wx.Dialog.__init__(self, parent, size = (425, 350), title = 'Edit Startup Script', style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
  769.         pst = wx.StaticText(self, -1, 'Path:')
  770.         ptx = wx.TextCtrl(self, -1, fileName, style = wx.TE_READONLY)
  771.         self.editor = editwindow.EditWindow(self)
  772.         self.editor.SetText(text)
  773.         wx.CallAfter(self.editor.SetFocus)
  774.         ok = wx.Button(self, wx.ID_OK)
  775.         cancel = wx.Button(self, wx.ID_CANCEL)
  776.         mainSizer = wx.BoxSizer(wx.VERTICAL)
  777.         pthSizer = wx.BoxSizer(wx.HORIZONTAL)
  778.         pthSizer.Add(pst, flag = wx.ALIGN_CENTER_VERTICAL)
  779.         pthSizer.Add((5, 5))
  780.         pthSizer.Add(ptx, 1)
  781.         mainSizer.Add(pthSizer, 0, wx.EXPAND | wx.ALL, 10)
  782.         mainSizer.Add(self.editor, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 10)
  783.         btnSizer = wx.BoxSizer(wx.HORIZONTAL)
  784.         btnSizer.Add((5, 5), 1)
  785.         btnSizer.Add(ok)
  786.         btnSizer.Add((5, 5), 1)
  787.         btnSizer.Add(cancel)
  788.         btnSizer.Add((5, 5), 1)
  789.         mainSizer.Add(btnSizer, 0, wx.EXPAND | wx.ALL, 10)
  790.         self.SetSizer(mainSizer)
  791.         self.Layout()
  792.  
  793.     
  794.     def GetText(self):
  795.         return self.editor.GetText()
  796.  
  797.  
  798.